#include<iostream>
#include<memory>

//关于智能指针


//它是什么：使用对象管理指针

//为什么要用它：自动回收，排除异常时无法手动delete导致内存泄漏问题

//允许多个对象共同管理一个指针对象，通过Pointer counting 的方式管理，直到count = 0或最后一个智能指针被reset掉或operator=掉时变自动回收


//可以手动设置删除器

using namespace std;
int main(int argc, char const *argv[])
{
    
    int *ppp = new int(10);
    std::shared_ptr<int> p (ppp);
    std::cout << *p << std::endl;//可以使用解引用
    
    shared_ptr<int> pp(p);//赋值构造函数

    cout << "shared_ptr.use_count = " << p.use_count() <<endl;


    return 0;
}
